package cn.tedu.hotel.repository;

import cn.tedu.hotel.pojo.vo.RoomListItemVO;
import cn.tedu.hotel.pojo.vo.RoomStandardVO;
import com.sun.org.apache.xpath.internal.operations.Bool;

import javax.validation.constraints.AssertTrue;
import java.util.Collection;
import java.util.List;
import java.util.Set;

/**
 *  处理房间数据缓存的接口
 */
public interface IRoomRedisRepository {

    /**
     *  房间数据项的key前缀
     */
    String ROOM_ITEM_KEY_PREFIX = "room:item:";

    /**
     *  房间列表的key
     */
    String  ROOM_LIST_KEY = "room:list";

    /**
     *  向Redis 中存入缓存数据，或替换原有数据
     * @param room
     */
    void put(RoomStandardVO room);


    /**
     * 从Redis中读取房间数据
     *
     * @param id 房间的id
     * @return 匹配的房间数据，如果没有匹配的数据，则返回null
     */
    RoomStandardVO get(Long id);

    /**
     *  根据id删除Redis中的房间数据
     * @param id
     * @return
     */
    Boolean deleteItem(Long id);

    /**
     *  删除Redis中的房间列表
     * @return
     */
    Boolean deleteList();

    Long deleteAll(Collection<String> keys);

    /**
     *  向Redis中存入房间列表
     * @param rooms 房间列表
     */
    void putList(List<RoomListItemVO> rooms);

    /**
     *  从Redis中读取房间列表
     * @return 房间列表，如果Redis中没有房间列表，则返回长度为0的集合
     */
    List<RoomListItemVO> getList();

    /**
     *
     * @return
     */
    Set<String> getAllKeys();

}
